package com.otod.commons.entity;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.otod.commons.utils.StringUtils;


/**
 * 分页类
 * @author jqiu
 * @version 2014-04-10
 */
public class Page {
    /**
     * Page分页对象参数*
     */
    public static final String PAGE_KEY = "_page_";
    /**
     * 自定义分页总条数SQL的ID对象参数*
     */
    public static final String PAGE_COUNT = "_countSql_";
    /**
     * Bean实体对象的参数*
     */
    public static final String PAGE_PO = "po";
    /**
     * map对象的参数*
     */
    public static final String PAGE_PARAM = "_param_";


    
    
    private int startIndex;		//起始索引
    private int pageSize;		//页面大小
    
    private int iDisplayStart;
    private int iDisplayLength;
    
    private int iTotalRecords;		//实际的行数
    private int iTotalDisplayRecords;//过滤之后，实际的行数
    private String echo;		//DataTables 用来生成的信息
    private List aaData;		//业务数据list

    
    /**
     * 构造方法
     *
     * @param request  传递 repage 参数，来记住页码
     * @param response 用于设置 Cookie，记住页码
     * @param pageSize 分页大小，如果传递 -1 则为不分页，返回所有数据
     */
    public Page(HttpServletRequest request) {
		/*
			jquery datatables参数说明:
			
			类型	名称	说明
			int	iDisplayStart	显示的起始索引(0开始)
			int	iDisplayLength	显示的行数
			int	iColumns	显示的列数
			string	sSearch	全局搜索字段 
			boolean	bEscapeRegex	全局搜索是否正则
			boolean	bSortable_(int)	表示一列是否在客户端被标志位可排序
			boolean	bSearchable_(int)	表示一列是否在客户端被标志位可搜索
			string	sSearch_(int)	个别列的搜索
			boolean	bEscapeRegex_(int)	个别列是否使用正则搜索
			int	iSortingCols	排序的列数 
			int	iSortCol_(int)	被排序的列
			string	sSortDir_(int)	排序的方向 "desc" 或者 "asc".
			string	sEcho	 DataTables 用来生成的信息
		*/
        String startIndex = request.getParameter("iDisplayStart");	//显示的起始索引
        String size = request.getParameter("iDisplayLength");		//显示的行数
        String echo = request.getParameter("sEcho");				// DataTables 用来生成的信息(接收后直接返回)
        
        if(StringUtils.isNumeric(startIndex)){
        	this.setStartIndex(Integer.parseInt(startIndex));
        }
        if(StringUtils.isNumeric(size)){
        	this.setPageSize(Integer.parseInt(size));
        }
        this.setEcho(echo);

    }


    /**
     * 获取 起始索引
     * @return
     */
	public int getStartIndex() {
		return startIndex;
	}

	/**
	 * 设置 起始索引
	 * @param startIndex
	 */
	public void setStartIndex(int startIndex) {
		this.startIndex = startIndex;
		this.iDisplayStart = startIndex;
	}

	/**
	 * 获取 页面大小
	 * @return
	 */
	public int getPageSize() {
		return pageSize;
	}

	/**
	 * 设置 页面大小
	 * @param pageSize
	 */
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
		this.iDisplayLength = pageSize;
	}

	/**
	 * 获取 DataTables用来生成的信息
	 * @return
	 */
	public String getEcho() {
		return echo;
	}

	/**
	 * 设置 DataTables用来生成的信息
	 * @param sEcho
	 */
	public void setEcho(String echo) {
		this.echo = echo;
	}



	public int getiTotalRecords() {
		return iTotalRecords;
	}


	public void setiTotalRecords(int iTotalRecords) {
		this.iTotalRecords = iTotalRecords;
	}


	public int getiTotalDisplayRecords() {
		return iTotalRecords;					//此属性和现有理解不一致。确认后再处理
//		return iTotalDisplayRecords;
	}


	public void setiTotalDisplayRecords(int iTotalDisplayRecords) {
		this.iTotalDisplayRecords = iTotalDisplayRecords;
	}


	public List getAaData() {
		return aaData;
	}

	/**
	 * 设置 业务数据List
	 * @param aaData
	 */
	public void setAaData(List aaData) {
		this.aaData = aaData;
	}


	public int getiDisplayStart() {
		return iDisplayStart;
	}


	public int getiDisplayLength() {
		return iDisplayLength;
	}
	
}
